package leetcode;


import org.junit.Test;

public class TrailingZeroe {

    @Test
    public void test() {
        int i = trailingZeroes(30);
        System.out.println("i = " + i);
    }


    /**
     * 题目：给定一个整数 n，返回 n! 结果尾数中零的数量。
     * <p>
     * 解析：尾数的含义
     * 1.小数点后面的数。
     * 2.结算账目中大数目之外剩下的小数目。
     * 3.指多位数字中末尾的一位或几位数字。
     * 因为是整数，这里猜测其含义为3
     *
     * @param n 参数
     * @return 阶乘过程中尾数为0的数量
     */
    int trailingZeroes(int n) {
        int count = 0;
        for (int i = n; i > 0; i--) {
            count += trailingZeroesGetCount(i);
        }

        return count;
    }

    int trailingZeroesGetCount(int n) {
        int count = 0;
        if (n % 5 == 0) {
            count++;
            if ((n / 5) % 5 == 0) {
                count += trailingZeroesGetCount(n / 5);
            }
        }
        return count;
    }


}
